CloudFormationがAurora Serveless v2をサポートしました
2022年10月5日、AWS CloudFormation が Amazon Aurora Serverless v2 をサポートする待望のアップデートがありました。
早速、CloudFormationを利用した Aurora Serveless v2 環境の作成を試す機会がありましたので、紹介させていただきます。
CloudFormation
CloudFormation の RDS設定に以下が追加されました。
DBCluster
Aurora Serveless V2のDB性能の設定項目ServerlessV2ScalingConfiguration
が追加され、最大、最小ACUの指定が可能になりました。
Type: AWS::RDS::DBCluster Properties: ServerlessV2ScalingConfiguration: MaxCapacity: 16 MinCapacity: 0.5
DBInstance
DBインスタンスクラスとして db.serverless
の指定が可能になりました。
Type: AWS::RDS::DBInstance Properties: DBInstanceClass: db.serverless
インスタンスクラスとして db.serverless
を指定する場合、ServerlessV2ScalingConfiguration
の指定が必須です。
テンプレート
以下設定のAmazon Aurora Serverless v2 クラスタを起動する、CloudFormationテンプレートを作成してみました。
- DBエンジン: aurora.3.02.0 (MySQL8互換)
- ACU: 最小0.5、最大16
- 文字コード: UTF8
- パフォーマンスインサイト: 有効
- マルチAZ: 2つのAZを利用
AWSTemplateFormatVersion: '2010-09-09' Description: Aurora Serverless v2 (Aurora3) Parameters: VpcId: Description: VPC ID Type: AWS::EC2::VPC::Id VpcRdsSubnetIds: Description: RDS VPC subnets list Type: List<AWS::EC2::Subnet::Id> DbClientCidr: Description: DB Client CIDR Block Type: String Default: 172.31.0.0/16 RdsDBClusterIdentifier: Description: DBClusterIdentifier Type: String Default: aurora-sl-v2 MasterUsername: Description: MasterUsername Type: String Default: admin MasterUserPassword: Description: MasterUserPassword Type: String Default: password NoEcho: true DatabaseName: Description: DatabaseName Type: String Default: testdb Resources: DBSubnetGroup: Type: AWS::RDS::DBSubnetGroup Properties: DBSubnetGroupDescription: !Sub '${AWS::StackName}-DBSubnetGroup' SubnetIds: !Ref 'VpcRdsSubnetIds' SecurityGroup: Type: AWS::EC2::SecurityGroup Properties: VpcId: !Ref 'VpcId' GroupDescription: !Sub '${AWS::StackName}-Allow MySQL-(tcp3306)' SecurityGroupIngress: - IpProtocol: tcp FromPort: 3306 ToPort: 3306 CidrIp: !Ref 'DbClientCidr' DBClusterParameterGroup: Type: AWS::RDS::DBClusterParameterGroup Properties: Description: !Sub '${AWS::StackName}-DBClusterParameterGroup' Family: aurora-mysql8.0 Parameters: character_set_server: utf8 character_set_client: utf8 character_set_connection: utf8 character_set_results: utf8 character_set_database: utf8 performance_schema: 1 DBParameterGroup: Type: AWS::RDS::DBParameterGroup Properties: Description: !Sub '${AWS::StackName}-DBParameterGroup' Family: aurora-mysql8.0 Parameters: general_log: 0 slow_query_log: 1 long_query_time: 5000 log_output: FILE DBCluster: Type: AWS::RDS::DBCluster DeletionPolicy: Snapshot Properties: DBSubnetGroupName: !Ref 'DBSubnetGroup' Engine: aurora-mysql EngineVersion: 8.0.mysql_aurora.3.02.0 VpcSecurityGroupIds: - !Ref 'SecurityGroup' DBClusterParameterGroupName: !Ref 'DBClusterParameterGroup' PreferredMaintenanceWindow: Thu:18:35-Thu:19:05 PreferredBackupWindow: 18:05-18:35 BackupRetentionPeriod: 7 DatabaseName: !Ref 'DatabaseName' MasterUsername: !Ref 'MasterUsername' MasterUserPassword: !Ref 'MasterUserPassword' ServerlessV2ScalingConfiguration: MaxCapacity: 16 MinCapacity: 0.5 DBInstance1: Type: AWS::RDS::DBInstance Properties: DBClusterIdentifier: !Ref 'DBCluster' DBInstanceClass: db.serverless DBParameterGroupName: !Ref 'DBParameterGroup' Engine: aurora-mysql EnablePerformanceInsights: true PreferredMaintenanceWindow: Thu:19:05-Thu:19:35 PromotionTier: 0 AvailabilityZone: !Select - 0 - !GetAZs Ref: AWS::Region DBInstance2: Type: AWS::RDS::DBInstance Properties: DBClusterIdentifier: !Ref 'DBCluster' DBInstanceClass: db.serverless DBParameterGroupName: !Ref 'DBParameterGroup' Engine: aurora-mysql EnablePerformanceInsights: true PreferredMaintenanceWindow: Thu:19:05-Thu:19:35 PromotionTier: 1 AvailabilityZone: !Select - 1 - !GetAZs Ref: AWS::Region
実行例
CloudFormationを利用した Aurora Serveless V2クラスタを設置できました。
所要時間は20分強でした。
まとめ
これまでCloudFormationを利用して Aurora Serveless v2 環境を構築する場合、 一旦通常の Aurora (プロビジョン) の環境を構築した後、 GUI、CLI などを利用して、DBインスタンスのエンジンをサーバレスに変更する必要がありました。
今回のアップデートにより、CloudFormation の IaC管理外となる ドリフトを発生させることなく、 Aurora Serveless v2環境の作成が可能となりました。 CDK の Aurora Serveless v2 のサポートについても期待したいと思います。
CloudFormationを利用した Aurora Serveless v1 の作成は、今回紹介したv2とは異なる設定が必要です。以下記事をご覧ください。